#!/bin/bash

# 获取当前sh文件所在目录的绝对路径作为当前目录
current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"

cd "$current_dir" || exit
echo "Current directory: $(pwd)"


# golang输出目录
go_out="$current_dir/../server"
# golang输出消息号
go_outmap="$go_out/messages"
# golang输出消息号bige
go_outmapbige="$current_dir/../gobigework/gobige/msgdef/protomsg"

# proto原文件目录
proto_dir="$current_dir/demo"
gobige_dir="$current_dir/gobige"
include_dir="$current_dir/include"
grpc_dir="$current_dir/grpc"

# 将tools/protoc路径添加到PATH环境变量中
tools_dir="$current_dir/tools/protoc"
export PATH="$tools_dir:$PATH"

# 调用protoc命令进行编译，并自动生成相应的Go代码
protoc --proto_path="$proto_dir;$include_dir;$gobige_dir" --go_out="$go_outmap" --go_opt="paths=source_relative" "$proto_dir"/*.proto
# 调用protoc命令进行编译bige消息
# protoc --proto_path="$proto_dir;$include_dir;$gobige_dir" --go_out="$go_outmapbige" --go_opt="paths=source_relative" "$gobige_dir"/*.proto

# 将 genprotomap 工具添加到 PATH 环境变量中
gen_dir="$current_dir/tools/genprotomap"
export PATH="$gen_dir:$PATH"

# 生成 Go 代码对应的 Map
genprotomap -dir "$proto_dir" -gofile "$go_outmap/init.go"
# 生成 Go 代码对应的 Map bige
# genprotomap -dir "$gobige_dir" -gofile "$go_outmapbige/init.go"

# 生成 gRPC 代码
protoc --proto_path="$proto_dir;$include_dir;$gobige_dir;$grpc_dir" --go-grpc_out="$go_outmap" --go-grpc_opt="paths=source_relative" --go_out="$go_outmap" --go_opt="paths=source_relative" "$grpc_dir"/*.proto